Skip to content

GH: Update of release process#2

Merged
SimonHH merged 8 commits into
devfrom
claude/add-third-variable-selection-IA5Eh
Mar 18, 2026
Merged

GH: Update of release process#2
SimonHH merged 8 commits into
devfrom
claude/add-third-variable-selection-IA5Eh

Conversation

@SimonHH
Copy link
Copy Markdown
Owner

@SimonHH SimonHH commented Mar 17, 2026

No description provided.

claude added 2 commits March 17, 2026 22:10
- ColumnPanel: add comboZ dropdown (Z/C:) for selecting a third variable
  as a color/height axis; updates alongside comboX columns
- SelectionPanel: bind comboZ events and include Z column index in ID
  tuples passed to PlotData
- PlotData: add iz, sz, z, zIsString, zIsDate attributes; fromIDs() loads
  Z column when idx has 8+ elements
- GUIPlotPanel: add ColorCtrlPanel with colormap selector, colorbar toggle,
  and 3D view checkbox; shown automatically when a Z variable is selected
- plotSignals(): when Z is set, renders a scatter plot colored by Z using
  the chosen colormap and optionally adds a colorbar; when 3D is enabled,
  renders a full 3D scatter plot with Z as the spatial z-axis
- set_subplots(): creates 3D axes (projection='3d') when 3D view is active
- figure.py (SwappyFigure): gracefully handle non-SwappyAxes (e.g. Axes3D)
  by adding compatibility shims for set_xlim_/get_xlim_/etc.
- _store_limits/_restore_limits: guard against AttributeError on non-Swappy
  axes (e.g. colorbar axes added by matplotlib)

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
Update README with:
- New plot types: scatter+color scale, 3D scatter plot
- New plot options: Z/color variable, colormap, colorbar, 3D view
- Workflow tip explaining the Z/C dropdown in the column panel

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
@SimonHH SimonHH changed the base branch from main to dev March 17, 2026 22:19
claude added 6 commits March 18, 2026 08:28
requirements.txt:
- Add minimum version pins for all packages
- numpy>=2.0: required for Python 3.14; removes deprecated bare aliases
  (np.bool, np.int, np.float, etc. removed in 2.0)
- wxpython>=4.2.4: first release with Python 3.14 wheel support
- pandas>=2.2, matplotlib>=3.8, scipy>=1.12, xarray>=2024.1,
  pyarrow>=15.0, openpyxl>=3.1, chardet>=5.0 all confirmed py314

installer.cfg:
- Python version: 3.9.9 → 3.14.0
- wxPython: 4.1.1 → 4.2.5 (cp314 wheels available on Windows/macOS)
- numpy: 1.22.4 → 2.2.4
- matplotlib: 3.5.2 → 3.10.1
- pandas: 1.4.2 → 2.2.3
- scipy: 1.8.1 → 1.15.2
- pyarrow: 8.0.0 → 19.0.1
- openpyxl: 3.0.10 → 3.1.5
- Pillow: 9.1.1 → 11.1.0
- xarray: 2023.2.0 → 2025.3.0
- chardet: 4.0.0 → 5.2.0
- Retain fatpack==0.7.3 (pure Python, tested functional under py314)
- Old py3.9 pins preserved as comments for reference

setup.py:
- Add python_requires='>=3.9'
- Add install_requires with minimum version constraints

Note for Linux: wxPython does not publish manylinux wheels on PyPI.
Use https://extras.wxpython.org/wxPython4/extras/linux/ for pre-built
wheels, or build from source (requires GTK dev headers).

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
- Rename "Z/C:" label to "z-axis:" in column panel
- Remove colormap dropdown (hardcode viridis) and colorbar checkbox (always on)
- Add x-y / y-z / x-z plane view buttons that appear when 3D view is active
- Require Ctrl+left-click for 3D rotation to avoid conflict with zoom

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
The previous approach relied on ax._cids being non-empty and event.key
being set, neither of which is reliable across matplotlib versions.

New approach:
- ax.mouse_init(rotate_btn=[]) disables built-in left-click rotation
- custom button_press handler sets _rotate_btn=[1] only when Ctrl is held
  (detected via wx.GetKeyState for wx-backend reliability)
- custom button_release handler resets _rotate_btn=[] on release

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
Previous approach used mouse_init/_rotate_btn which silently fails in
many matplotlib versions. New approach:
- Connect a button_press handler that fires AFTER the built-in one
- If Ctrl is not held, reset ax.button_pressed=None so _on_move returns
  early and skips rotation
- wx.GetKeyState used for reliable keyboard state detection

https://claude.ai/code/session_019co5puUhq1kxsuWG57SPzC
@SimonHH SimonHH merged commit 7a3827b into dev Mar 18, 2026
SimonHH pushed a commit that referenced this pull request May 4, 2026
…tation

PR #2 (now in dev) contained an earlier, simpler Z/color and 3D implementation.
PR #4's 13 commits are the polished, final version that supersedes PR #2 entirely.

Conflicts resolved in 3 files (13 conflict blocks total) by keeping HEAD:
- GUIPlotPanel.py: _patch_3d_ctrl_rotate (3-layer toolbar-aware approach),
  ColorCtrlPanel (btFree + cbPlot3D + camera state), plotSignals (shared
  z_norm, logZ/flipZ, single colorbar per axis), _store/_restore_limits
  (3D camera + zlim preservation).
- GUISelectionPanel.py: _ClampedComboBox for comboZ, zSel parameter handling.
- plotdata.py: auto-merged cleanly (no manual resolution needed).

https://claude.ai/code/session_01TRfZkFW9YczDyobkh3cndo
@SimonHH SimonHH deleted the claude/add-third-variable-selection-IA5Eh branch May 5, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants